package com.itany.corejava.code04_循环结构;

import java.util.Scanner;

/**
 * @author 石小俊
 * @date 2024年01月11日 8:53
 * 斐波那契数列: 1 1 2 3 5 8 13 ... N, 前两项之和等于第三项
 * 在控制输入需要打印几个数, 输出对应数量的数字
 */
public class Test12_斐波那契数列 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入斐波那契数列的数量:");
        int num = sc.nextInt();
        if (num == 1) {
            // 如果数量为1,其值只有一个1
            System.out.println("1");
        } else if (num >= 2) {
            // 打印前两项
            System.out.print("1 1 ");
            // 开始计算后面的值
            // 求第N项的值=N-2项+N-1项
            // 定义N-2项的值
            int a = 1;
            // 定义N-1项的值
            int b = 1;
            for (int i = 3; i <= num; i++) {
                // 定义当前项的值
                int n = a + b;
                // 当当前元素迭代完成之后,将会进入下一项
                // 此时N-2项的值变为之前N-1项的值
                a = b;
                // 此时N-1项的值变为之前N项的值
                b = n;
                System.out.print(n + " ");
            }
        }

    }
}
